﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GA
{
    public enum Estilo
    {
        MusicaClassica = 0,
        Metal = 1,
        Rock = 2,
        Pop = 3,
        ReB = 4,
        HipHop = 5,
        Axe = 6,
        Swingueira = 7,
        Pagode = 8,
        Mpb = 9,
        Samba = 10,
        Forro = 11,
        Sertanejo = 12,
        Funk = 13
    }

    public enum Nacionalidade 
    {
        Brasileira = 0,
        NorteAmericana,
        Européia,
        Asiática
    }

    public enum Ritmo 
    {
        Agitado = 0,
        Calmo
    }

    public enum Tendencia 
    {
        Dark = 0,
        Positive
    }

    public enum Decada
    {
        Anos50 = 0,
        Anos60,
        Anos70,
        Anos80,
        Anos90,
        Anos00
    }

    public enum Hit
    {
        Hit = 0,
        NaoHit
    }

    public class Musica
    {
        public string Nome { get; set; }
        public string Banda { get; set; }
        public string Display { get { return Nome + " / " + Banda; } }
        public Estilo Estilo { get; set; }
        public Nacionalidade Nacionalidade { get; set; }
        public Decada Decada { get; set; }
        public Hit Hit { get; set; }
        public Tendencia Tendencia { get; set; }
        public Ritmo Ritmo { get; set; }
        public int Fitness { get; set; }

        public Musica(string nome, string banda, Estilo estilo, Nacionalidade nacionalidade, Decada decada, Hit hit, Tendencia tendencia,
            Ritmo ritmo) 
        {
            this.Nome = nome;
            this.Banda = banda;
            this.Estilo = estilo;
            this.Nacionalidade = nacionalidade;
            this.Decada = decada;
            this.Hit = hit;
            this.Tendencia = Tendencia;
            this.Ritmo = Ritmo;
            this.Fitness = 0;
        }

        public int CalcularFitness(Perfil perfilSelecionado) 
        {
            int fitness = 0;
            if (perfilSelecionado.Banda == Banda)
                fitness += 5;
            if (perfilSelecionado.Decada == Decada)
                fitness += 3;
            if (perfilSelecionado.Estilo >= Estilo - 1 && perfilSelecionado.Estilo <= Estilo + 1)
                fitness += 4;
            if (perfilSelecionado.Hit == Hit)
                fitness += 1;
            if (perfilSelecionado.Nacionalidade == Nacionalidade)
                fitness += 3;
            if (perfilSelecionado.Ritmo == Ritmo)
                fitness += 2;
            if (perfilSelecionado.Tendencia == Tendencia)
                fitness += 2;

            Fitness = fitness;

            return Fitness;
        }
    }
}
